package com.smart.community.region.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smart.community.region.entity.Zone;
import com.smart.community.region.vo.ZoneListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 分区Mapper接口
 *
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Mapper
public interface ZoneMapper extends BaseMapper<Zone> {

    /**
     * 根据社区ID查询分区列表
     *
     * @param communityId 社区ID
     * @return 分区列表
     */
    List<Zone> selectByCommunityId(@Param("communityId") Long communityId);

    /**
     * 根据物业公司ID查询分区列表
     *
     * @param propertyCompanyId 物业公司ID
     * @return 分区列表
     */
    List<Zone> selectByPropertyCompanyId(@Param("propertyCompanyId") Long propertyCompanyId);

    /**
     * 检查分区编码是否存在
     *
     * @param zoneCode 分区编码
     * @param excludeId 排除的分区ID（用于更新时检查）
     * @return 数量
     */
    int countByZoneCode(@Param("zoneCode") String zoneCode, @Param("excludeId") Long excludeId);

    /**
     * 根据物业公司ID查询分区列表（包含社区信息）
     * 返回格式：社区名 - 分区名
     *
     * @param propertyCompanyId 物业公司ID
     * @return 分区列表VO
     */
    List<ZoneListVO> selectZoneListByPropertyCompanyId(@Param("propertyCompanyId") Long propertyCompanyId);
}
